package com.hanfb.mall.inventory.request;

import com.hanfb.mall.inventory.dao.RedisDao;
import com.hanfb.mall.inventory.model.ProductInventory;
import com.hanfb.mall.inventory.service.ProductInventoryService;

/**
 * @作者： Hanfb
 * @描述： 比如说一个 商品发生了交易 那么就要去修改商品对应的库存
 * 此时就会发送请求过来 要求修改库存  那么可能这个就是所谓的 data update request 数据更新请求
 * cache aside pattern
 * 1)删除缓存
 * 2)更新数据库
 *
 * @时间： 2020年10月11日
 */
public class ProductInventoryDbUpdateRequest implements Request {

    /**
     * 商品库存
     */
    private ProductInventory productInventory;

    /**
     * 商品库存service
     */
    private ProductInventoryService productInventoryService;

    public ProductInventoryDbUpdateRequest(ProductInventory productInventory, ProductInventoryService productInventoryService) {
        this.productInventory = productInventory;
        this.productInventoryService=productInventoryService;
    }


    @Override
    public void executeProcess() {
        System.out.println("===========日志============：数据库更新请求开始执行，商品id="+productInventory.getProductId()+",商品库存cnt="+productInventory.getInventoryCnt());
        productInventoryService.removeProductInventroyCache(productInventory);
        System.out.println("===========日志============：已删除reids 中的缓存");
        try {
            Thread.sleep(20000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        productInventoryService.updateProductInventroy(productInventory);
    }

    @Override
    public Integer getProductId() {
        return productInventory.getProductId();
    }
    @Override
    public boolean isForceRefresh(){
        return false;
    }
}
